import axios from 'axios'
import Qs from 'qs'//为了让axios以表单数据形式提交 否则需要后端处理数据
export function request(config) {
  // 1.创建axios的实例
  const instance = axios.create({
    headers: {'Content-Type':'application/x-www-form-urlencoded'},
    timeout: 5000,
  })

  // 2.axios的拦截器
  // 2.1.请求拦截的作用
  instance.interceptors.request.use(config => {
    // console.log(config);
    // 1.比如config中的一些信息不符合服务器的要求

    // 2.比如每次发送网络请求时, 都希望在界面中显示一个请求的图标

    // 3.某些网络请求(比如登录(token)), 必须携带一些特殊的信息
    //线上环境
    if (process.env.NODE_ENV !== 'development' && config.method == "post") {
      if (config.url.indexOf('/api') == 0) {
        config.baseURL = process.env.BASE_API;
        config.url = config.url.replace('/api', '');
      }
    }
    //开发环境
    if (process.env.NODE_ENV == 'development' && config.method == "post") {
      config.data.test = 4;
    }
    config.data = Qs.stringify(config.data)
    return config
  }, err => {
    // console.log(err);
  })

  // 2.2.响应拦截
  instance.interceptors.response.use(res => {
    return res.data
  }, err => {
    console.log(err);
  })

  // 3.发送真正的网络请求
  return instance(config)
}
